package com.caocaog.market.toccpt.jiguang;


/**
 * @author liguang
 * @version 1.0.0
 * @Project jeecg-boot
 * @Package com.example.jiguang.test
 * @ClassName JPushUtil.java
 * @createTime 2021年11月13日 20:17:00
 * @Description 极光推送
 */
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName JPushUtil
 * @Description:
 * @Author gzm
 * @Date 2020/6/12 10:14
 **/
public class JiGuangPushUtil {

    /** 设置好账号的app_key和masterSecret是必须的
     用自己创建以用后的APP_KEY和MASTER_SECRET
     替换即可，后期可写到yml配置文件中*/
    private static String APP_KEY = "1dde12da456fe1197b5b353d";
    private static String MASTER_SECRET = "210ada6fb7f02ebf422b17a9";
    // 极光推送>>Android
    //Map<String, String> parm是我自己传过来的参数,可以自定义参数

    public static void jpushAndroid(Map<String, String> parm) {
        // 创建JPushClient(极光推送的实例)
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        String[] strArr = new String[]{"ccptstaff32380","ccptstaff30957","ccptstaff57600","ccptstaff59360","ccptstaff59363","ccptstaff59362","ccptstaff59359",
                "ccptstaff59386","ccptstaff59385","ccptstaff59384","ccptstaff59383","ccptstaff59358","ccptstaff59364","ccptstaff59354","ccptstaff16644","ccptstaff59353",
                "ccptstaff49135","ccptstaff48667","ccptstaff28702","ccptstaff59375","ccptstaff59373","ccptstaff59365"};
        // 推送的关键,构造一个payload
        PushPayload payload = PushPayload.newBuilder()
                // 指定android平台的用户
                .setPlatform(Platform.android())
                // 你项目中的所有用户
                // .setAudience(Audience.all())
                .setAudience(Audience.alias(strArr))
                // .setAudience(Audience.alias("ccptstaff32380,ccptstaff30957")) // 设置别名发送,单发，点对点方式
                //.setAudience(Audience.tag("tag1")) // 设置按标签发送，相当于群发
//                .setAudience(Audience.registrationId(parm.get("id"))) // registrationId指定用户
                // 发送内容
                .setNotification(Notification.android(parm.get("msg"),
                        parm.get("title"), parm))
                // apnProduction指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式) 不用设置也没关系
                // TimeToLive 两个小时的缓存时间
                .setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build())
                // 自定义信息
                .setMessage(Message.content(parm.get("msg")))
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
            System.out.println(pu.toString());

        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }

    // 极光推送>>ios

    // Map<String, String> parm是我自己传过来的参数,可以自定义参数

    public static  void jpushIOS(Map<String, String> parm) {
        // 创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        PushPayload payload = PushPayload.newBuilder()
                // ios平台的用户
                .setPlatform(Platform.ios())
                // 所有用户
                .setAudience(Audience.all())
                // registrationId指定用户
                //.setAudience(Audience.registrationId(parm.get("id")))
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                // 这里是设置提示音
                                .setSound("happy")
                                .addExtras(parm)
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                // 自定义信息
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
            //log.info(String.valueOf(pu));
            System.out.println("----->  "+pu);
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }


    // 极光推送>>All所有平台

    public static void jpushAll(Map<String, String> extras,String alert,String[] pushNames) {

        // 创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        // 创建option
        PushPayload payload = PushPayload.newBuilder()
                // 所有平台的用户
                .setPlatform(Platform.all())
                // registrationId指定用户
                //.setAudience(Audience.registrationId(param.get("id")))
                .setAudience(Audience.alias(pushNames))
                .setNotification(Notification.newBuilder()
                        // 发送ios
                        .addPlatformNotification(IosNotification.newBuilder()
                                // 消息体
                               // .setAlert(param.get("msg"))
                                .setAlert(alert)
                                .setBadge(+1)
                                // ios提示音
                                .setSound("happy")
                                // 附加参数
                                .addExtras(extras)
                                .build())
                        // 发送android
                        .addPlatformNotification(AndroidNotification.newBuilder()
                                // 附加参数
                                .addExtras(extras)
                                // 消息体
                                .setAlert(alert)
                                .build())
                        .build())
                // 指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
                .setOptions(Options.newBuilder().setApnsProduction(true).build())
                // 自定义信息
                .setMessage(Message.newBuilder().setMsgContent(alert).addExtras(extras).build())
                .build();
        try {
            PushResult pu = jpushClient.sendPush(payload);
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        // 设置推送参数
        // 这里可以自定义推送参数了
        Map<String, String> parm = new HashMap<String, String>();
        for (int i = 0; i < 10; i++) {
            parm.clear();
            // 设置提示信息,内容是文章标题
            parm.put("msg",i+"--你知道对我最重要的东西是什么吗？是这句话的第一个字");
            parm.put("title",i+"--title");
            parm.put("code","1");
            System.out.println(i+"----开始推送----");
            JiGuangPushUtil.jpushAndroid(parm);
            System.out.println(i+"----推送结束----");
            System.out.println();
            System.out.println();
        }

    }


}
